import $http from '@/common/api/request.js'
export default {
	state:{
		cartList:[],
		selectedList:[]
	},

	mutations:{
		// 请求到数据赋值操作
		initGetData(state,list){
			
			state.cartList=list;
			
		},

		// 单选方法
		selectCheck(state,index){
			let id=state.cartList[index].id
			let i=state.selectedList.indexOf(id)
			//如果selectedList里面已经存在就代表是选中状态，checked=false，并且selectedList里面删除
			if(i>-1){
				state.cartList[index].checked=false
				return state.selectedList.splice(i,1)
			}
			// 如果之前没选中，就checked=true,把当前的id添加到selectedList
			state.cartList[index].checked=true
			state.selectedList.push(id)
				
		},
		// 全选方法
		checkAll(state){
			state.selectedList=state.cartList.map(item=>{
				item.checked=true;
				return item.id
			})
		},
		// 全不选方法
		unCheckAll(state){
			state.cartList.forEach(item=>{
				item.checked=false;
			})
			state.selectedList=[]
		},
		// 删除方法
		deleteGoods(state){
			state.cartList=state.cartList.filter(v=>{
				return state.selectedList.indexOf(v.id)===-1
			})
			
		},
		// 加入购物车
		addShopCart(state,goods){
			state.cartList.push(goods)
		}
	},
	actions:{
		// 全选方法
		checkedAllFn({commit,getters}){
			getters.checkedAll?commit("unCheckAll"):commit("checkAll")
		},
		// 删除方法
		deleteGoodsFn({commit,state}){
			uni.showModal({
				content:'确认删除吗？',
				success:()=>{
					$http.request({
						url:'/deleteCart',
						method:'post',
						header:{
							'content-type': 'application/x-www-form-urlencoded',
							token:true
						},
						data:{
							goodsId:state.selectedList
						}
					}).then(res=>{
						commit('deleteGoods')
						commit('unCheckAll')
						uni.showToast({
							title:'删除成功',
							icon:'none'
						})
					}).catch(()=>{
						uni.showToast({
							title:'请求失败',
							icon:'none'
						})
					})
				}
				
			})
			
			
		}
	},
	getters:{
		// 判断是否全选
		checkedAll(state){
			return state.cartList.length===state.selectedList.length
		},
		// 总价
		totalCount(state){
			let total={
				pprice:0,
				num:0
			}
			state.cartList.forEach(v=>{
				// 判断当前数据的id是否存在于selectedList中
				if(state.selectedList.indexOf(v.id)>-1){
					total.num+=1
					total.pprice+=v.pprice*v.num
				}
			})
			return total;
		}
	}
}